/**
 * @description 先把父亲节点取出来，放到一个数组中
 * @param totalMenuArray 所有菜单数据
 */
export function data2tree(totalMenuArray: Array<any>) {
  const fatherMenuArray = totalMenuArray.filter(d => d.menuFather === '0');
  return data2treeDG(totalMenuArray, fatherMenuArray);
}

/**
 *
 * @param totalMenuArray  所有菜单数据
 * @param fatherMenuArray 父节点组成的数组
 */
function data2treeDG(totalMenuArray: Array<any>, fatherMenuArray: Array<any>) {
  fatherMenuArray.forEach(parentMenu => {
    // 获取所有子节点,并对子节点进行排序
    const childrenArray = totalMenuArray.filter(menu => menu.menuFather === parentMenu.no).sort((a, b) => {
        if (Number.isInteger(a.menuOrder) && Number.isInteger(b.menuOrder)) {
          return a.menuOrder - b.menuOrder;
        } else {
          return 0;
        }
      });
    parentMenu.children = childrenArray;
    if (childrenArray.length > 0) { // 有儿子节点则递归
      data2treeDG(totalMenuArray, childrenArray);
    }
  });
  return fatherMenuArray;
}




/**
 * 校验参数是否为数组
 * 如果是，则原样返回；否则返回空数组
 */
export function checkArray(arr) {
  if (Object.prototype.toString.call(arr) === '[object Array]') {
    return arr;
  } else {
    return [];
  }
}
